/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cpal.entrenamiento.service.impl;

import com.cpal.entrenamiento.dao.ICategoriaDAO;
import com.cpal.entrenamiento.dao.IEjercicioDAO;
import com.cpal.entrenamiento.dao.IPlantillaDAO;
import com.cpal.entrenamiento.dao.ISubCategoriaDAO;
import com.cpal.entrenamiento.dao.ITareaDAO;
import com.cpal.entrenamiento.entity.Categoria;
import com.cpal.entrenamiento.entity.Ejercicio;
import com.cpal.entrenamiento.entity.ElementoMenu;
import com.cpal.entrenamiento.entity.Plantilla;
import com.cpal.entrenamiento.entity.SubCategoria;
import com.cpal.entrenamiento.entity.Tarea;
import com.cpal.entrenamiento.service.IElaborarMaterialService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Service;

/**
 *
 * @author Omar
 */
@Service("elaborarMaterialService")
@Scope(value = "singleton", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class ElaborarMaterialService implements IElaborarMaterialService {

    @Autowired
    ICategoriaDAO categoriaDAO;
    @Autowired
    ISubCategoriaDAO subCategoriaDAO;
    @Autowired
    ITareaDAO tareaDAO;
    @Autowired
    IEjercicioDAO ejercicioDAO;
    @Autowired
    IPlantillaDAO plantillaDAO;

    @Override
    public ElementoMenu obtenerElementos() {
        ElementoMenu elementoMenu = new ElementoMenu("Inicio", "Inicio");
        //obtener lista de categorias
        List<Categoria> categorias = categoriaDAO.obtenerCategorias();

        for (Categoria categoria : categorias) {
            ElementoMenu elementoCategoriaMenu = new ElementoMenu(categoria.getDescripcion(), categoria.getDescripcion());
            List<SubCategoria> subCategorias = subCategoriaDAO.obtenerSubCategorias(categoria.getCodigo());
            for (SubCategoria subCategoria : subCategorias) {
                ElementoMenu elementoSubCategoriaMenu = new ElementoMenu(subCategoria.getDescripcion(), subCategoria.getDescripcion());
                List<Tarea> tareas = tareaDAO.obtenerTareas(subCategoria.getCodigo());
                for (Tarea tarea : tareas) {
                    ElementoMenu elementoTareaMenu = new ElementoMenu(tarea.getDescripcion(), tarea.getDescripcion());
                    elementoSubCategoriaMenu.agregarHijo(elementoTareaMenu);
                }
                elementoCategoriaMenu.agregarHijo(elementoSubCategoriaMenu);
            }
            elementoMenu.agregarHijo(elementoCategoriaMenu);
        }
        return elementoMenu;
    }

    @Override
    public List<Categoria> obtenerCategoria() {
        return categoriaDAO.obtenerCategorias();
    }

    @Override
    public List<SubCategoria> obtenerSubCategoria(Integer codigoCategoria) {
        return subCategoriaDAO.obtenerSubCategorias(codigoCategoria);
    }

    @Override
    public List<Tarea> obtenerTarea(Integer codigoSubCategoria) {
        return tareaDAO.obtenerTareas(codigoSubCategoria);
    }

    @Override
    public List<Ejercicio> buscarEjercicio(Ejercicio ejercicio) {
        return ejercicioDAO.buscarEjercicio(ejercicio);
    }

    @Override
    public void eliminarEjercicio(Ejercicio ejercicio) {
        ejercicioDAO.eliminarEjercicio(ejercicio);
    }

    @Override
    public List<Plantilla> obtenerPlantilla() {
        return plantillaDAO.obtenerPlantilla();
    }

}
